1

Introdução aos Agentes de Resolução de Problemas

PolyU COMP5511Lecture 2
00:00

Do Reflexo ao Planeamento

Na evolução do design de agentes, passamos dos Agentes Reativos, que mapeiam perceções diretamente para ações com base em regras simples (por exemplo, «Se o carro à frente travar, iniciar travagem»), para os Agentes de Resolução de Problemas. Os agentes reativos operam no contexto imediato, enquanto os agentes de resolução de problemas são Orientados por objetivos. Consideram as consequências futuras das suas ações para encontrar uma sequência que satisfaça um objetivo específico.

  • Agente Reativo: $Action = Function(Percept)$
  • Agente de Planeamento: $Action\_Sequence = Search(State, Goal)$

A Representação Atómica do Estado

Neste nível fundamental, os agentes utilizam uma Representação Atómica. Isto significa que o estado do mundo é tratado como uma caixa negra — um nó singular sem estrutura interna visível ao algoritmo de procura. O agente raciocina apenas sobre:

  • Estados ($S$): Instantâneos do ambiente.
  • Ações ($A$): Transições entre estados.
  • Teste de Objetivo: Uma verificação booleana se o estado $s \in S_{goal}$.

O Ciclo de Resolução de Problemas

Um agente de resolução de problemas segue um ciclo distinto de quatro passos para navegar no ambiente:

  1. Formulação do Objetivo: Decidir qual o objetivo a prosseguir com base na situação atual.
  2. Formulação do Problema: Abstrair o mundo real para um modelo matemático (Estados e Ações).
  3. Procura: Simular sequências de ações para encontrar o caminho ótimo.
  4. Execução: Realizar as ações encontradas durante a fase de procura sem mais deliberação (assumindo um ambiente estático).
Implementação em Python (agent_types.py)
1
class ReflexAgent:
2
defact(self, percept):
3
# Direct mapping: Rule -> Action
4
return rules.get(percept, default_action)
5
6
class ProblemSolvingAgent:
7
def__init__(self):
8
self.seq = [] # Buffered action sequence
9
10
defact(self, percept):
11
# If we are mid-execution, continue
12
ifself.seq:
13
returnself.seq.pop(0)
14
15
# Otherwise, Plan (Search)
16
state = self.update_state(percept)
17
goal = self.formulate_goal(state)
18
problem = self.formulate_problem(state, goal)
19
20
# Search returns a list of actions
21
self.seq = search_algorithm(problem)
22
23
returnself.seq.pop(0)